package com.furb.pub.conta;

import com.furb.pub.controle.sistema.Cliente;
import com.furb.pub.controle.sistema.Estabelecimento;
import com.furb.pub.controle.sistema.Mesa;
import com.furb.pub.controle.sistema.PedidoCliente;
import com.furb.pub.persistencia.EstabelecimentoDao;
import com.furb.pub.persistencia.FactoryDao;
import com.furb.pub.persistencia.IDao;

public class ContaNormal extends Conta {

	@Override
	public String getNomeCalculo() {
		return "Conta normal";
	}
	
	@Override
	public String calcular(Mesa mesa) {
		StringBuilder conta = new StringBuilder();
    	IDao<Estabelecimento> estabelecimentoDao = FactoryDao.getInstance(EstabelecimentoDao.class.getName());
    	Estabelecimento estabelecimento = estabelecimentoDao.find("-1");
    	
    	conta.append(estabelecimento.getNome() + "\n");
    	conta.append(estabelecimento.getEndereco() + "\n");
    	conta.append(estabelecimento.getCnpj() + "\n");
    	conta.append("CUPOM FISCAL \n");
    	
    	float valorTotal = 0;
    	int itemPos = 1;
    	for (Cliente p : mesa.getClientes()) {
    		
    		conta.append(p.getNome().toUpperCase() + "\n");
			for (PedidoCliente pedido : p.getPedidos()) {
				conta.append(itemPos + " - " + pedido.getProduto().getNome() + "\n");
				conta.append("	" + pedido.getQuantidade() + " UN	X	" + pedido.getProduto().getValor() +
						"		" + (pedido.getQuantidade() * pedido.getProduto().getValor()) + "\n");
				
				valorTotal += (pedido.getQuantidade() * pedido.getProduto().getValor());
				itemPos++;
			}
		}
    	conta.append("TOTAL R$				" + valorTotal);
    	
    	return conta.toString();
	}

}
